package cn.tedu.springmvc.controller;

import cn.tedu.springmvc.mapper.UserInfoMapper;
import cn.tedu.springmvc.pojo.dto.UserDTO;
import cn.tedu.springmvc.pojo.entity.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

@Controller
public class UserController {
    @Autowired
    private UserInfoMapper userInfoMapper;
    /*
    @RequestMapping("/regUser")
    @ResponseBody
    public String regUser(HttpServletRequest request){
        System.out.println("开始处理用户注册！！！！！！！！！！");
        //通过请求对象根据参数名获取参数值
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        String nickname=request.getParameter("nickname");
        String age=request.getParameter("age");
        System.out.println(username+","+password+","+nickname+","+age);
        return "注册成功";
    }

     */
    /**
     *  第二种接收客户端传递归来参数的方式:
     *  在当前方法上定义对应的参数，保证参数名和客户端传递过来的参数的名字一致即可。
     *  【这里方法上参数类型可以是整数，SpringMVC框架还会自动转换，前提是客户端传递过来的该
     *  参数可以成功转换为整数。】
     *
     *  /regUser?username=范传奇&password=123456&nickname=传奇&age=22
     *              ^
     *            保证参数名一致
     *                     v
     *  regUser(String username, String password,String nickname,int age){
     */
//    @RequestMapping("/regUser")
//    @ResponseBody
//    public String regUser(String username,String password,String nickname,int age){
//        System.out.println("开始处理注册!!!!!");
//        System.out.println(username+","+password+","+nickname+","+age);
//        return "注册成功";
//    }
    /**
     * 第三种接收客户端传递过来参数的方式:设计数据传输对象 DTO
     *
     * 这里在方法上直接定义一个DTO类型的参数，保证这个类中属性的设计与参数一致即可
     * SpringMVC框架会自动实例化一个该类的实例，并将参数按照对应的属性设置好，然后将
     * 该对象传递给这个方法
     */
    @RequestMapping("/regUser")
    @ResponseBody
    public String regUser(UserDTO userDTO){
        System.out.println(userDTO);
        //将浏览器传递上来的注册信息设置到UserInfo对象中
        UserInfo userInfo=new UserInfo();
        userInfo.setUsername(userDTO.getUsername());
        userInfo.setPassword(userDTO.getPassword());
        userInfo.setNickname(userDTO.getNickname());
        userInfo.setAge(userDTO.getAge());
        int num=userInfoMapper.insertUserInfo(userInfo);
        return num>0?"注册成功":"注册失败";
    }

}
